package com.chuxing.security.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.chuxing.domain.DTO.*;
import com.chuxing.domain.User;
import com.chuxing.domain.VO.GetUserInfoVO;
import com.chuxing.domain.VO.PageResultVO;

import java.util.List;

/**
* @author HP
* @description 针对表【t_user(用户信息表)】的数据库操作Service
* @createDate 2024-11-16 15:24:49
*/
public interface UserService extends IService<User> {

    /**
     * 根据用户名查询用户信息
     * @param s
     * @return
     */
    User selectByUsername(String s);

    /**
     * 用户登录
     * @param loginDTO
     */
    void login(LoginDTO loginDTO);

    /**
     * 用户登出
     */
    void logout();

    /**
     * 用户注册
     * @param registerDTO
     */
    void register(RegisterDTO registerDTO);

    /**
     * 获取用户角色列表
     * @return
     */
    List<String> getListOfRoles();

    /**
     * 重置密码
     * @param resetPasswordDTO
     */
    void resetPassword(ResetPasswordDTO resetPasswordDTO);

//    void resetPasswordByAdmin(ResetPasswordByAdminDTO resetPasswordByAdminDTO);

    /**
     * 获取用户信息
     * @param username
     * @return
     */
    GetUserInfoVO getUserInfo(String username);

    /**
     * 保存用户信息
     * @param userInfoDTO
     */
    void saveUserInfo(UserInfoDTO userInfoDTO);

    /**
     * 根据id删除用户
     * @param ids
     */
    void deleteUserByAdmin(List<String> ids);

    /**
     * 根据id获取用户信息
     * @param id
     * @return
     */
    GetUserInfoVO getUserById(String id);

    /**
     * 获取用户列表
     * @param getUserListDTO
     * @return
     */
    PageResultVO getUserList(GetUserListDTO getUserListDTO);

    /**
     * 根据id修改用户信息
     * @param addUserByAdminDTO
     */
    void addUserByAdmin(AddUserByAdminDTO addUserByAdminDTO);

    /**
     * 根据id修改用户信息
     * @param updateUserByAdminDTO
     */
    void updateUserByAdmin(UpdateUserByAdminDTO updateUserByAdminDTO);

    /**
     * 修改密码
     * @param changePasswordDTO
     */
    void changePassword(ChangePasswordDTO changePasswordDTO);
}
